package cn.wizzer.app.crown.modules.models;

import cn.wizzer.app.crown.modules.models.caches.CrownMatchSimplex;
import cn.wizzer.app.crown.modules.models.enums.MatchTypeEnum;
import cn.wizzer.framework.base.model.BaseModel;
import lombok.Data;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 皇冠 赛程 足球 篮球
 */
@Data
@Table("crown_match")
public class CrownMatch extends BaseModel implements Serializable {


    /**
     * 主键ID
     */
    @Column
    @Name
    @Comment("ID")
    @ColDefine(type = ColType.VARCHAR, width = 32)
    @PrevInsert(els = {@EL("uuid()")})
    private String id;


    /**
     * 赛事ID
     */
    @Column
    @Comment("赛事ID")
    @ColDefine(type = ColType.VARCHAR, width = 16)
    private String mid;


    /**
     * 阶段 早盘:future、今日:today、 滚球:roll、 已结束：finished、其他：other(包含赛事取消、球员弃权、赛事延赛、队名错误等等情况)
     */
    @Column
    @Comment("stage")
    @ColDefine(type = ColType.VARCHAR, width = 32)
    private String stage;

    /**
     * 比赛类型 足球FOOTBALL 篮球BASKETBALL
     */
    @Column
    @Comment("比赛类型")
    @ColDefine(type = ColType.VARCHAR, width = 32)
    private MatchTypeEnum type;

    /**
     * 联赛名称
     */
    @Column
    @Comment("联赛名称")
    @ColDefine(type = ColType.VARCHAR, width = 128)
    private String league;

    /**
     * 比赛日期
     */
    @Column("date_time")
    @Comment("日期")
    @ColDefine(type = ColType.DATETIME, width = 32)
    private Date dateTime;

    public long getDateTimestamp() {
        return null == dateTime ? 0 : dateTime.getTime();
    }

    /**
     * 比赛时间
     */
    @Column("start")
    @Comment("比赛时间")
    @ColDefine(type = ColType.VARCHAR, width = 128)
    private String start;

    /**
     * 主队名称
     */
    @Column("mb_team")
    @Comment("主队名称")
    @ColDefine(type = ColType.VARCHAR, width = 64)
    private String mbTeam;

    /**
     * 客队名称
     */
    @Column("tg_team")
    @Comment("客队名称")
    @ColDefine(type = ColType.VARCHAR, width = 64)
    private String tgTeam;

    @Column("strong")
    @Comment("强队H主队强C客队强")
    @ColDefine(type = ColType.VARCHAR, width = 1)
    private String strong;

    /**
     * 是否有主场 false true
     */
    @Column("have_home")
    @Comment("是否有主场")
    @ColDefine(type = ColType.BOOLEAN)
    private Boolean haveHome;
    /**
     * 是否有滚球 false true
     */
    @Column("have_roll")
    @Comment("是否有滚球")
    @ColDefine(type = ColType.BOOLEAN)
    private Boolean haveRoll;

    /**
     * 是否过半场
     */
    @Column("is_half_gone")
    @Comment("是否过半场")
    @ColDefine(type = ColType.BOOLEAN)
    @Default("false")
    private Boolean isHalfGone;


    /**
     * 滚球中时的比分
     * 如： 3-0
     */
    private String score;

    /**
     * 进行到哪里
     * 如：下半场 16'
     */
    private String process;


    /**
     * 滚球中罚牌数量
     * 如： 0-1
     */
    private String redCard;


    /**
     * 是否腰斩
     */
    private Boolean isCut = false;

    /**
     * 比赛中所有的玩法细项
     */
    List<CrownMatchSimplex> matchSimplexList;

    /**
     * 上半场主队得分
     */
    @Column("mb_in_ball_hf")
    @Comment("上半场主队得分")
    @ColDefine(type = ColType.VARCHAR, width = 16)
    private String mbInBallHf;

    /**
     * 全场主队得分
     */
    @Column("mb_in_ball")
    @Comment("全场主队得分")
    @ColDefine(type = ColType.VARCHAR, width = 16)
    private String mbInBall;

    /**
     * 上半场客队得分
     */
    @Column("tg_in_ball_hf")
    @Comment("上半场客队得分")
    @ColDefine(type = ColType.VARCHAR, width = 16)
    private String tgInBallHf;

    /**
     * 全场客队得分
     */
    @Column("tg_in_ball")
    @Comment("全场客队得分")
    @ColDefine(type = ColType.VARCHAR, width = 16)
    private String tgInBall;

    /**
     * 版本号
     */
    @Column
    @Comment("版本号")
    private Integer version;

    /**
     * 赛果详情
     */
    private List<CrownSubResult> subResults;

    /**
     * 所有玩法数量
     */
    private Integer allPlayWayNum;




}
